051cd9b32da5fdc07b935709c4f1799b0640290e,jeta-apt/src/main/java/org/brooth/jeta/apt/processors/MetaScopeProcessor.java,MetaScopeProcessor,process,#TypeSpec.Builder#RoundContext#,60
Before Change
.addField(providerTypeName, providerNameStr, Modifier.PRIVATE)
.addMethod(MethodSpec.methodBuilder(metaEntityNameStr)
.addModifiers(Modifier.PUBLIC)
.returns(metaEntityClassName)
.beginControlFlow("if ($L == null)", providerNameStr)
.beginControlFlow("synchronized($T.class)", metaEntityClassName)
.beginControlFlow("if ($L == null)", providerNameStr)
.addStatement("$L = new $T.MetaEntityProvider()", providerNameStr, metaEntityProviderMetacode)
.endControlFlow()
.endControlFlow()
.endControlFlow()
.addStatement("return $L.get()", providerNameStr)
.build());
TypeSpec.Builder interfaceBuilder = TypeSpec.interfaceBuilder(metaEntityNameStr)
.addJavadoc("emitted by " + metaEntityClassStr + '\n').addModifiers(Modifier.PUBLIC)
After Change
ClassName metaEntityProviderMetacode = ClassName.bestGuess(MetacodeUtils.getMetacodeOf(
env.getElementUtils(), metaEntityClassStr));
MethodSpec.Builder providerMethodBuilder = MethodSpec.methodBuilder(metaEntityNameStr)
.addModifiers(Modifier.PUBLIC)
.returns(metaEntityClassName);
// meta scheme
TypeElement metaEntityElement = env.getElementUtils().getTypeElement(metaEntityClassStr);
if (metaEntityElement.getKind().isClass()) {
metaScopeTypeSpecBuilder.addField(providerTypeName, providerNameStr, Modifier.PRIVATE);
providerMethodBuilder
.beginControlFlow("if ($L == null)", providerNameStr)
.beginControlFlow("synchronized($T.class)", metaEntityClassName)
.beginControlFlow("if ($L == null)", providerNameStr)
.addStatement("$L = new $T.MetaEntityProvider()", providerNameStr, metaEntityProviderMetacode)
.endControlFlow()
.endControlFlow()
.endControlFlow()
.addStatement("return $L.get()", providerNameStr);
} else {
providerMethodBuilder.addStatement("return null");
}
metaScopeTypeSpecBuilder.addMethod(providerMethodBuilder.build());